package com.xyoto.community.service;

import com.xyoto.community.cache.UserCache;
import io.swagger.annotations.ApiModel;

/**
 * @author coderFu
 * @create 2021/11/7
 */
@ApiModel("用户缓存服务接口")
public interface UserCacheService {


    /**
     * 根据用户id获取
     * @param userId
     * @return
     */
    UserCache getUserMessageFromUserCacheById(Integer userId);

    /**
     * 更新用户缓存信息
     * @param userCache
     */
    void updateUserCache(UserCache userCache);


    /**
     * 根据用户id 删除用户缓存信息
     * @param userId
     */
    void deleteUserCache(Integer userId);

    /**
     * 用户动态点赞状态存储
     * @param userId
     * @param dynamicId
     */
    void addUserDynamicLoveStatus(Integer userId, Integer dynamicId);

    /**
     * 根据用户id 和动态id 取消用户点赞
     * @param userId
     * @param dynamicId
     */
    void cancelUserDynamicLove(Integer userId, Integer dynamicId);

    /**
     * 根据用户id 和 动态id（偏移量），判断用户点赞状态
     * @param userId
     * @param dynamicId
     * @return
     */
    boolean getUserDynamicLoveStatusFromCache(Integer userId, Integer dynamicId);

    /**
     * 根据用户id 和 关注用户id， 存储用户关注状态
     * @param userId
     * @param targetUserId
     */
    void addUserFollowStatus(Integer userId, Integer targetUserId);

    /**
     * 根据用户id，关注用户id ，取消用户关注
     * @param userId
     * @param targetUserId
     */
    void cancelUserFollow(Integer userId, Integer targetUserId);

    /**
     * 根据用户id ，关注用户id，获取用户的关注状态
     * @param userId
     * @param targetUserId
     * @return
     */
    boolean getUserFollowStatus(Integer userId, Integer targetUserId);

    /**
     * 根据用户id，动态id， 时间戳存储用户动态缓存信息
     * @param userId
     * @param dynamicId
     * @param timestamp
     */
    void addUserAllDynamic(Integer userId, Integer dynamicId, long timestamp);

    /**
     * 根据用户id， 动态id，将设为私密的动态从用户动态缓存中移除
     * @param userId
     * @param dynamicId
     */
    void deleteUserAllDynamicForMakePersonal(Integer userId, Integer dynamicId);

    /**
     * 根据用户id， 动态id, 将删除的动态从用户动态列表中移除
     * @param userId
     * @param dynamicId
     */
    void deleteUserAllDynamicForDeleteDynamic(Integer userId, Integer dynamicId);

    /**
     * 根据用户id，动态id， 时间戳恢复存储用户动态缓存信息
     * @param userId
     * @param dynamicId
     * @param timestamp
     */
    void recoverUserAllDynamic(Integer userId, Integer dynamicId, long timestamp);















}
